import IPlatform from "../libs/platform/IPlatform";
import QunHeiPlatform from "../libs/platform/QunHeiPlatform";

export default class PlatFormAgency implements IPlatform {
    /****************************************************************************************************************
     *Readonly 常量
     ****************************************************************************************************************/
    private static _single: PlatFormAgency = undefined!;
    /****************************************************************************************************************
     *Property 定义变量
     ****************************************************************************************************************/
    /**
     * 平台
     */
    private platform: IPlatform = undefined!;
    /****************************************************************************************************************
     * Lifecycle 生命周期相关方法
     ****************************************************************************************************************/
    private constructor() {
        this.init();
    }
    /****************************************************************************************************************
     * Public 公有方法
     ****************************************************************************************************************/
    public getOpenID(): Promise<string> {
        return this.platform.getOpenID();
    }
    /****************************************************************************************************************
     * private 私有方法
     ****************************************************************************************************************/
    private init(): void {
        //初始化
        this.platform = new QunHeiPlatform();
    }
    /****************************************************************************************************************
     * Property Get && Set 属性的 get && set 函数
     ****************************************************************************************************************/
    public static get single(): PlatFormAgency {
        if (!PlatFormAgency._single) {
            PlatFormAgency._single = new PlatFormAgency();
        }
        return PlatFormAgency._single;
    }
}